package com.atguigu.gmall.index.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface GmallCache {

    /**
     * 缓存的前缀,默认 gmall:
     * @return
     */
    String prefix() default "gmall:";

    /**
     * 缓存的过期时间,默认30min
     * @return
     */
    int timeout() default 30;

    /**
     * 为了防止缓存雪崩,给缓存时间添加随机值,这里可以指定随机值范围
     * 默认10min
     * @return
     */
    int random() default 10;

    /**
     * 为了防止缓存击穿,添加分布式锁,这里可以指定分布式锁的前缀
     * 默认lock:
     * @return
     */
    String lock() default "lock:";
}
